home *** CD-ROM | disk | FTP | other *** search
- PROGRAM PGDEM5
- C-----------------------------------------------------------------------
- C Demonstration program for PGPLOT. This programs shows the use of
- C routine PGOLIN to allow the user to draw polygons on the screen.
- C As each polygon is completed, it is filled in using routine PGPOLY.
- C The user positions the cursor to define the vertices of the polygon.
- C He types 'A' to add a vertex at the current cursor position, 'D' to
- C delete the nearest vertex, or 'X' to signal that the polygon is
- C complete. Two 'X's in succession terminates the program.
- C-----------------------------------------------------------------------
- INTEGER PGBEG
- INTEGER MAXPT, NPT, COL
- PARAMETER (MAXPT=50)
- REAL X(MAXPT),Y(MAXPT)
- INTEGER WHICH
- C
- 100 FORMAT(' Demonstration of PGPLOT cursor routines',
- 1 ' PGLCUR and PGOLIN.'/
- 2 ' These routines allow you to draw polygons on the',
- 3 ' screen, using the'/
- 4 ' cursor to mark the vertices.'/)
- 110 FORMAT(/' PGLCUR outlines the polygon as you draw it, PGOLIN',
- 1 ' just marks the'/
- 2 ' vertices. Which routine do you want to use? Type 1',
- 3 ' for PGLCUR, 2 for'/
- 4 ' PGOLIN:')
- 120 FORMAT(' Use the cursor to choose the vertices of the polygon'/
- 1 ' Type A to add a vertex at the cursor position'/
- 2 ' Type D to delete the last vertex'/
- 3 ' Type X to close the polygon and shade it'/
- 4 ' (Type X again to exit from the program)')
- C
- WRITE (6, 100)
- WRITE (6, 110)
- READ (5, *, ERR=10, END=10) WHICH
- 10 IF (WHICH.LT.1 .OR. WHICH.GT.2) WHICH = 1
- WRITE (6, 120)
- C
- C Open device for graphics.
- C
- IF (PGBEG(0,'?',1,1) .NE. 1) STOP
- C
- C Clear the screen. Draw a frame at the physical extremities of the
- C view surface using full-screen viewport and standard window.
- C
- CALL PGPAGE
- CALL PGSVP(0.0,1.0,0.0,1.0)
- CALL PGSWIN(0.0,1.0,0.0,1.0)
- CALL PGBOX('BC',0.1,5,'BC',0.1,5)
- COL = 0
- C
- C Increment the color index and then call PGOLIN to allow the user
- C to draw a polygon.
- C
- 20 COL = COL+1
- CALL PGSCI(COL)
- NPT = 0
- IF (WHICH.EQ.1) CALL PGLCUR(MAXPT,NPT,X,Y)
- IF (WHICH.EQ.2) CALL PGOLIN(MAXPT,NPT,X,Y,-1)
- C
- C Fill the interior of the polygon in the current color. If less
- C than three vertices were supplied, that is a signal to terminate
- C the program. Otherwise, go back and draw another polygon.
- C
- IF (NPT.GE.3) THEN
- CALL PGPOLY(NPT,X,Y)
- GOTO 20
- END IF
- C
- C Close the device and exit.
- C
- CALL PGEND
- END
-